// 各模块调用js,有一部分涉及ajax调用数据，涉及到是否登录的问题，所以js分为公共部分和单独部分
var ZHT = ZHT || {};
// 依附提示框
ZHT.tips = function(content, selector, options){
	var opts = {};
	opts = $.extend(opts, {tips:1, time:2000, maxWidth: 260}, options);
	return layer.tips(content, selector, opts);
}
// 弹出层
ZHT.open = function(options){
	var opts = {};
	opts = $.extend(opts, {offset:'100px'}, options);
	return layer.open(opts);
}
// 确认框
ZHT.confirm = function(options){
	var opts = {};
	// opts = $.extend(opts, {title:'系统提示',offset:'100px',btn:['确定', '取消']}, options);	
	// return layer.confirm(opts.content,{icon: 3, title:opts.title,offset:opts.offset},options.yes,options.cancel);
	opts = $.extend(opts, {title:'系统提示',offset:'100px',btn:['确定', '取消']}, options);
	return layer.confirm(opts.content,{icon: 3, title:opts.title,offset:opts.offset,btn: opts.btn},options.yes,options.cancel);
}
// 提示框
ZHT.msg = function(msg, options, func){
	var opts = {};
	if(options){
		options.offset = '200px';
		if(options.icon==1){
			// options.icon='wst1';
			options.time = 1000;
		}else if(options.icon==2 || options.icon==5){
			// options.icon='wst2';
		}else if(options.icon==3){
			// options.icon='wst3';
		}else if(options.icon==16){
			// options.icon='wstloading';
			options.time = 9000000;
		}
	}
	//有抖动的效果,第二位是函數
	if(typeof(options)!='function'){
		opts = $.extend(opts,{time:2000,shade: [0.4, '#000000']},options);
		return layer.msg(msg,opts, func);
	}else{
		return layer.msg(msg, options);
	}
}
/**
 * 获取所有表单参数
 * 跟进class=ipt获取所有表单元素，然后以name保存，跟表单元素的id无关
 */
ZHT.getParams = function(obj){
  var params = {};
  var chk = {},s;
  $(obj).each(function(){
    if($(this)[0].type == 'hidden' || $(this)[0].type == 'number' || $(this)[0].type == 'tel' || $(this)[0].type == 'password' || $(this)[0].type == 'select-one' || $(this)[0].type == 'textarea' || $(this)[0].type == 'text'){
      params[$(this).attr('id')] = $.trim($(this).val());
    }else if($(this)[0].type == 'radio'){
      if($(this).attr('name')){
        params[$(this).attr('name')] = $('input[name='+$(this).attr('name')+']:checked').val();
      }
    }else if($(this)[0].type == 'checkbox'){
      if($(this).attr('name') && !chk[$(this).attr('name')]){
        s = [];
        chk[$(this).attr('name')] = 1;
        $('input[name='+$(this).attr('name')+']:checked').each(function(){
          s.push($(this).val());
        });
        params[$(this).attr('name')] = s.join(',');
      }
    }    
  });
  chk = null,s = null;
  return params;
}
/**
 * 获取所有表单参数
 * 跟进class=ipt获取所有表单元素，然后以name保存，跟表单元素的id无关
 * 单独给系统配置config用，因为要判断是否是图片，如果是图片，则要获取configId，拼接到字段值后面，传到修改页面，启动图片要用
 */
ZHT.getParamsConfig = function(obj){
  var params = {};
  var chk = {},s,val;
  $(obj).each(function(){
    if($(this)[0].type == 'hidden' || $(this)[0].type == 'number' || $(this)[0].type == 'tel' || $(this)[0].type == 'password' || $(this)[0].type == 'select-one' || $(this)[0].type == 'textarea' || $(this)[0].type == 'text'){
			val = $.trim($(this).val());
			if(val.substring(0,7) == 'upload/' && val.indexOf(".") != -1){
				params[$(this).attr('name')] = val + '_' + $(this).attr('data-configId');
			}else{
				params[$(this).attr('name')] = val;
			}			
    }else if($(this)[0].type == 'radio'){
      if($(this).attr('name')){
        params[$(this).attr('name')] = $('input[name='+$(this).attr('name')+']:checked').val();
      }
    }else if($(this)[0].type == 'checkbox'){
      if($(this).attr('name') && !chk[$(this).attr('name')]){
        s = [];
        chk[$(this).attr('name')] = 1;
        $('input[name='+$(this).attr('name')+']:checked').each(function(){
          s.push($(this).val());
        });
        params[$(this).attr('name')] = s.join(',');
      }
    }    
  });
  chk = null,s = null;
  return params;
}
/**
 * 全选
 */
ZHT.checkAll = function(v){
  $('.chk').each(function(){
    $(this).prop('checked',v);
  })
}
ZHT.checkChks = function(obj,cobj){
	$(cobj).each(function(){
		$(this)[0].checked = obj.checked;
	})
}
ZHT.getChks = function(obj){
	var ids = [];
	$(obj).each(function(){
		if($(this)[0].checked)ids.push($(this).val());
	});
	return ids;
}
/**
 * json转换，
 * 如果ajax返回的是{"status":-999,"msg":"\u5bf9\u4e0d\u8d77\uff0c\u60a8\u8fd8\u6ca1\u6709\u767b\u5f55\uff0c\u8bf7\u5148\u767b\u5f55"}
 * 可以转换为{status: -999, msg: "对不起，您还没有登录，请先登录"}
 */
ZHT.toJson = function(str){
	var json = {};
	try{
		if(typeof(str )=="object"){
			json = str;
		}else{
			json = eval("("+str+")");
		}
		if(json.status && json.status=='-999'){
			ZHT.msg(json.msg,function(){ // '对不起，您已经退出系统！请重新登录'
				if(window.parent){
					window.parent.location.reload();
				}else{
					location.reload();
				}
			});
		}else if(json.status && json.status=='-998'){
			ZHT.msg('对不起，您没有操作权限，请与管理员联系');
			return;
		}
	}catch(e){
		ZHT.msg("系统发生错误:"+e.getMessage);
		json = {};
	}
	return json;
}

/**
 * 删除对象空属性值
 * 这个方法不会影响原来的对象，而是返回一个新对象
 */
ZHT.filterParams = function(obj) {
	var _newPar = {};
	for (var key in obj) {
		if ((obj[key] === 0 || obj[key] === false || obj[key]) && obj[key].toString().replace(/(^\s*)|(\s*$)/g, '') !== '') {
			_newPar[key] = obj[key];
		}
	}
	return _newPar;
}
/**
 * 输入值保留小数位数
 * obj输入框
 * len小数位数
 */
ZHT.limitDecimal = function(obj,len){
	var s = obj.value;
 	if(s.indexOf(".")>-1){
	 	if((s.length - s.indexOf(".")-1)>len){
	 		obj.value = s.substring(0,s.indexOf(".")+len+1);
	 	}
	}
 	s = null;
}
/**
 * 只能输入数字
 */
ZHT.isNumberKey = function(evt){
  var charCode = (evt.which) ? evt.which : event.keyCode;
  if (charCode > 31 && (charCode < 48 || charCode > 57)){
    return false;
  }else{		
    return true;
  }
} 
/**
 * 只能输入数字和小数点
 */
ZHT.isNumberdoteKey = function(evt){
  var e = evt || window.event; 
  var srcElement = e.srcElement || e.target;
  
  var charCode = (evt.which) ? evt.which : event.keyCode;
  if (charCode > 31 && ((charCode < 48 || charCode > 57) && charCode!=46)){
    return false;
  }else{
    if(charCode==46){
      var s = srcElement.value;			
      if(s.length==0 || s.indexOf(".")!=-1){
        return false;
      }			
    }		
    return true;
  }
}
/**
 * 只能輸入數字和字母
 */
ZHT.isNumberCharKey = function(evt){
  var e = evt || window.event; 
  var srcElement = e.srcElement || e.target;	
  var charCode = (evt.which) ? evt.which : event.keyCode;

  if((charCode>=48 && charCode<=57) || (charCode>=65 && charCode<=90) || (charCode>=97 && charCode<=122) || charCode==8){
    return true;
  }else{		
    return false;
  }
}
/**
 * 是否是中文
 */
ZHT.isChinese = function(obj,isReplace){
  var pattern = /[\u4E00-\u9FA5]|[\uFE30-\uFFA0]/i
  if(pattern.test(obj.value)){
    if(isReplace)obj.value=obj.value.replace(/[\u4E00-\u9FA5]|[\uFE30-\uFFA0]/ig,"");
    return true;
  }
  return false;
}
/**
 * 设置表单元素值(输入框，单选，多选，下拉)-修改商品时用到
 */
ZHT.setValue = function(name, value){
	var first = name.substr(0,1), input, i = 0, val;
	if("#" === first || "." === first){
		input = $(name);
	} else {
		input = $("[name='" + name + "']");
	}

	if(input.eq(0).is(":radio")) { //单选按钮
		input.filter("[value='" + value + "']").each(function(){this.checked = true});
	} else if(input.eq(0).is(":checkbox")) { //复选框
		if(!$.isArray(value)){
			val = new Array();
			val[0] = value;
		} else {
			val = value;
		}
		for(i = 0, len = val.length; i < len; i++){
			input.filter("[value='" + val[i] + "']").each(function(){this.checked = true});
		}
	} else {  //其他表单选项直接设置值
		input.val(value);
	}
}
ZHT.setValues = function(obj){
	var input,value,val;
    for(var key in obj){
    	if($('#'+key)[0]){
    		ZHT.setValue('#'+key,obj[key]);
    	}else if($("[name='" + key + "']")[0]){
    		ZHT.setValue(key,obj[key]);
    	}
    }
}
/**
 * 多选框是否选中通用显示隐藏
 * t 多选框是否选中 0,1
 * str 需要隐藏显示的元素id或class #id或.class
 */
ZHT.showHide = function(t,str){
	var s = str.split(',');
	if(t){
		for(var i=0;i<s.length;i++){
		  $(s[i]).show();
		}
	}else{
		for(var i=0;i<s.length;i++){
		  $(s[i]).hide();
		}
	}
	s = null;
}
/**
 * 无意义的值转换为空
 */
ZHT.blank = function(str,defaultVal){
	if(str=='0.00')str = '';
	if(str=='0000-00-00')str = '';
	if(str=='0000-00-00 00:00:00')str = '';
	if(!str)str = '';
	if(typeof(str)=='null')str = '';
	if(typeof(str)=='undefined')str = '';
	if(str=='' && defaultVal)str = defaultVal;
	return str;
}
/**
 * 商品图片鼠标经过弹出变大
 */
ZHT.toolTip = function(){
	$('body').mousemove(function(e){
		var windowH = $(window).height();  
			if(e.pageY >= windowH*0.72){
			var top = windowH*0.28;
				$('.imged').css('margin-top',-top);
			}else{
			var top = windowH*0.055;
				$('.imged').css('margin-top',-top);
			}
	});
}
/**
 * 下拉-商品列表，下拉筛选条件用
 */
ZHT.dropDownLayer = function(dropdown,layer){
	$(dropdown).hover(function () {
    $(this).find(layer).show();
  }, function () {
    $(this).find(layer).hide();
  });
	$(layer).hover(function () {
		$(this).find(layer).show();
  }, function () {
  	$(this).find(layer).hide();
  });
}
/**记录广告点击**/
ZHT.recordClick = function(adId){
	$.post(ZHT.U('home/ad/recordClick'),{id:adId},function(data){});
}


$(function(){
	/**
	 * 获取ZHT基础配置
	 * @type {object}
	 */
	ZHT.conf = window.conf;
	/* 基础对象检测 */
	ZHT.conf || $.error("ZHT基础配置没有正确加载！");
	if(ZHT.conf.ROUTES)ZHT.conf.ROUTES = eval("("+ZHT.conf.ROUTES+")");
	/**
	 * 解析URL
	 * @param  {string} url 被解析的URL
	 * @return {object}     解析后的数据
	 */
	ZHT.parse_url = function(url){
		var parse = url.match(/^(?:([a-z]+):\/\/)?([\w-]+(?:\.[\w-]+)+)?(?::(\d+))?([\w-\/]+)?(?:\?((?:\w+=[^#&=\/]*)?(?:&\w+=[^#&=\/]*)*))?(?:#([\w-]+))?$/i);
		parse || $.error("url格式不正确！");
		return {
			"scheme"   : parse[1],
			"host"     : parse[2],
			"port"     : parse[3],
			"path"     : parse[4],
			"query"    : parse[5],
			"fragment" : parse[6]
		};
	}

	ZHT.parse_str = function(str){
		var value = str.split("&"), vars = {}, param;
		for(var i=0;i<value.length;i++){
			param = value[i].split("=");
			vars[param[0]] = param[1];
		}
		return vars;
	}
	ZHT.initU = function(url,vars){
		if(typeof vars === "string"){
			vars = this.parse_str(vars);
		}
		var newUrl = ZHT.conf.ROUTES[url];
		if(newUrl.indexOf('>')>-1 && newUrl.indexOf('-<')>-1){
			var reg = /-</g;
			var reg2 = />/g;
			newUrl = newUrl.replace(reg,'-:').replace(reg2,'');
		}
	    var urlparams = newUrl.match(/:(\w+(\??))/g);
	    var tmpv = null;
		for(var v in vars){
			tmpv = ':'+v;
			if($.inArray(tmpv,urlparams)>-1){
				newUrl = newUrl.replace(tmpv,vars[v]);
				delete vars[v];
			}
		}
		tmpv = urlparams = null;
		if(false !== ZHT.conf.SUFFIX){
			newUrl += "." + ZHT.conf.SUFFIX;
		}
		if($.isPlainObject(vars)){
			var tmp = $.param(vars);
			if(tmp!='')newUrl += "?"+tmp;
			tmp = null;
		}
		//url = url.replace(new RegExp("%2F","gm"),"+");
		newUrl = ZHT.conf.APP + "/"+newUrl;
		return newUrl;
	}
	/**
	 * 类似这样的url admin.php/goodsCat/listQuery.html
	 * 提示错误控制器不存在:app\admin\controller\Goodscat
	 * 需要转换成admin.php/goods_cat/listQuery.html
	 */
	ZHT.strsplit = function(str){
		arr = str.split(/(?=[A-Z])/); // 按大写字母拆分字符串
		return arr.join("_").toLowerCase(); // 以_拼接字符串并转换成小写返回
	}
	ZHT.U0 = function(url, vars){
		if(!url || url=='')return '';
		var info = this.parse_url(url), path = [], reg;
		/* 验证info */
		info.path || $.error("url格式错误！");
		url = info.path;
		/* 解析URL */
		path = url.split("/");
		path = [path.pop(), path.pop(), path.pop()].reverse();
		path[1] || $.error("ZHT.U(" + url + ")没有指定控制器");
		/* 编译控制器 */
		path[1] = ZHT.strsplit(path[1]);
		// // 由于url中没有模块参数，所以减少一个参数
		// path = [path.pop(), path.pop()].reverse();
		// path[0] || $.error("ZHT.U(" + url + ")没有指定控制器");
		// /* 编译控制器 */
		// path[0] = ZHT.strsplit(path[0]);
		// console.log(path);
		/* 重新组装url */
		url = path.join("/");
		// console.log(url);
		/* 解析参数 */
		if(typeof vars === "string"){
			vars = this.parse_str(vars);
		}
		/* 解析URL自带的参数 */
		info.query && $.extend(vars, this.parse_str(info.query));
		if(false !== ZHT.conf.SUFFIX){
			url += "." + ZHT.conf.SUFFIX;
		}
		if($.isPlainObject(vars)){
			var tmp = $.param(vars);
			if(tmp!='')url += "?"+tmp;
			tmp = null;
		}
		//url = url.replace(new RegExp("%2F","gm"),"+");
		url = ZHT.conf.APP + "/"+url;
		return url;
	}
	// 多个参数ZHT.U('admin/homeMenu/toAdd','parentId=' + json[i].menuId + '&menuType=' + json[i].menuType);
	ZHT.U = function(url,vars){
		if(ZHT.conf.ROUTES && ZHT.conf.ROUTES[url]){
		    return ZHT.initU(url,vars);
		}else{
			return ZHT.U0(url, vars);
		}
	}

	ZHT.AU = function(url, vars){
        if(!url || url=='')return '';
        var info = this.parse_url(url);
        url = info.path;
        path = url.split("/");
        url = "addon/";
        path = [path.pop(), path.pop()].reverse();
        path[0] || $.error("ZHT.AU(" + url + ")没有指定控制器");
        path[1] || $.error("ZHT.AU(" + url + ")没有指定接口");
        url  = url + info.scheme + "-" + path.join('-');
        /* 解析参数 */
		if(typeof vars === "string"){
			vars = this.parse_str(vars);
		}
		info.query && $.extend(vars, this.parse_str(info.query));
		if(false !== ZHT.conf.SUFFIX){
			url += "." + ZHT.conf.SUFFIX;
		}
		if($.isPlainObject(vars)){
			var tmp = $.param(vars);
			if(tmp!='')url += "?"+tmp;
			tmp = null;
		}
		return ZHT.conf.APP + "/"+url;
	}
});
// 轮播图
ZHT.slides = function(objId){
	var slide = $(objId), li = slide.find("li");
	var slidecontrols = $(objId+'-controls').eq(0),
		span = slidecontrols.find("span");
	var index = 1, _self = null;
	span.bind("mouseover", function() {
		_self = $(this);
		index = span.index(_self);
		span.removeClass("curr");
		span.eq(index).addClass("curr");
		li.addClass("hide");
		li.css("z-index", -1);
		li.css("display", "none");
		li.eq(index).css("display", "");
		li.eq(index).css("z-index", 1);
		li.eq(index).removeClass("hide");
		clearInterval(timer);
	});
	var timer = setInterval(function() {
		span.removeClass("curr");
		span.eq(index).addClass("curr");
		li.addClass("hide");
		li.css("z-index", -1);
		li.css("display", "none");
		li.eq(index).fadeToggle(500);
		li.eq(index).css("z-index", 1);
		li.eq(index).removeClass("hide");
		index++;
		if (index >= span.length)
			index = 0;
	}, 4000);
	span.bind("mouseout", function() {
		index++;
		if (index >= span.length)
				index = 0;
		timer = setInterval(function() {
			span.removeClass("curr");
			span.eq(index).addClass("curr");
			li.addClass("hide");
			li.css("z-index", -1);
			li.css("display", "none");
			li.eq(index).fadeToggle(500);
			li.eq(index).css("z-index", 1);
			li.eq(index).removeClass("hide");
			index++;
			if (index >= span.length)
				index = 0;
		}, 4000);
	});
}